﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using DB.Model;
namespace HR_ASP.ViewModel
{
    public class PracownikViewModel
    {
        public int ID { get; set; }
        public string Identyfikator { get; set; }
        public string Imie { get; set; }
        public string Nazwisko { get; set; }
        public string Pesel { get; set; }
        public string Email { get; set; }
        public string Miasto { get; set; }
        public string Kod { get; set; }
        public string Ulica { get; set; }
        public string Numer { get; set; }
        public bool czyZaznaczone { get; set; }
        public DateTime? DataM { get; set; }
        public DateTime? DataU { get; set; }

        public IEnumerable<WolneViewModel> Wolne { get; set; }
        public IEnumerable<PracowBadanView> Badania { get; set; }
        public IEnumerable<HistoriaViewModel> Historie { get; set; }

        public PracownikViewModel()
        {
        }

        public PracownikViewModel(Pracownik p)
        {
            this.ID = p.ID_Pracow;
            this.Identyfikator = p.Identyfikator;
            this.Imie = p.Imie;
            this.Nazwisko = p.Nazwisko;
            this.Pesel = p.Pesel;
            this.Email = p.Email;
            this.Miasto = p.Miasto;
            this.Kod = p.Kod;
            this.Ulica = p.Ulica;
            this.Numer = p.Numer;
            this.DataU = p.DataU;
            this.DataM = p.DataM;
            this.Wolne = p.Wolne.Select(n => new WolneViewModel()
            {
                ID = n.ID_Wolne,
                DataU = n.DataU,
                NazwaPowodu = n.Powod_Nieobecnosci.Nazwa
            }).ToArray();
            this.Badania = p.Pracow_Badan.Select(n => new PracowBadanView()
            {
                ID = n.ID_PB,
                NazwaBadania = n.Badania.Nazwa,
                DataOstatnBadania = n.Data_Ostatn_Badan,
                DataWaznosci = n.Data_Wazn

            }).ToArray();
            this.Historie = p.Historie.Select(n => new HistoriaViewModel()
                {
                    ID = n.ID_Hist,
                    DataZatrudnienia = n.Data_Zatrud,
                    DataZwolnienie = n.Data_Zwoln,
                    Stanowisko = new StanowiskoViewModel(n.Stanowiska),
                    Dzial = new DzialViewModel(n.Dzialy)
                }).ToArray();
        }

        public Pracownik GetModel( Pracownik pracownik )
        {
           pracownik.ID_Pracow = this.ID;
           pracownik.Identyfikator = this.Identyfikator;
           pracownik.Imie = this.Imie;
           pracownik.Nazwisko = this.Nazwisko;
           pracownik.Pesel = this.Pesel;
           pracownik.Email = this.Email;
           pracownik.Miasto = this.Miasto;
           pracownik.Kod = this.Kod;
           pracownik.Ulica = this.Ulica;
           pracownik.Numer = this.Numer;
           if (this.ID == 0)
           {
               pracownik.DataU = DateTime.Now;
           }
           pracownik.DataM = DateTime.Now;
            return pracownik;
        }

    }
}